/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.service;

import com.comac.ins.isfd.domain.bo.IsfdBusinessDatabaseRefBo;
import com.comac.ins.isfd.domain.vo.IsfdBusinessDatabaseRefTreeVo;
import com.comac.ins.isfd.domain.vo.IsfdBusinessDatabaseRefVo;

import java.util.List;


public interface IIsfdBusinessDatabaseRefService {


    /**
     * 根据入参查询关联关系列表
     */
    List<IsfdBusinessDatabaseRefVo> selectDataBaseRefByCondition(List<Long> sceneIds,
                                                                 List<Long> dataBaseTypeIds,
                                                                 List<Long> systemsIds,
                                                                 List<Long> modelIds);

    /**
     * 保存
     */
    Boolean save(IsfdBusinessDatabaseRefBo bo);

    /**
     * 修改 是否导入状态
     */
    void updateHaveImportData(IsfdBusinessDatabaseRefBo bo);

    /**
     * 查询数据资产-左侧树
     */
    List<IsfdBusinessDatabaseRefTreeVo> baseTreeV3(String dataBaseName, String matchName);

    /**
     * 系统地图-创建地图-左侧树
     */
    List<IsfdBusinessDatabaseRefTreeVo> mapTreeV3(Long sceneId, Long systemId);


    IsfdBusinessDatabaseRefVo queryByKey(Long sceneId, Long databaseTypeId, Long systemId, Long parentModelId);


    /**
     * 删除之前校验
     * 判断是否有导入数据存在
     */
    void preDelete(List<Long> sceneIds,
                   List<Long> dataBaseTypeIds,
                   List<Long> systemsIds,
                   List<Long> modelIds);

    /**
     * 根据唯一索引删除 关联关系
     * 关联业务地图也删一下
     */
    void deleteByKey(Long sceneId, Long databaseTypeId, Long systemId, Long parentModelId);
}
